#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <cstring>
using namespace std;
int dp[5001][5001];
short dp2[5001][5001];
char isPal[5001][5001];
char s[5010];
int len;

int isPalindromo(int l, int r) {
  if (r < l) return 0;
  char & res = isPal[l][r];
  if (res >= 0) return res;
  if (s[l] == s[r]) {
    if (l + 1 >= r) return res = 1;
    return res = isPalindromo(l+1, r-1);
  } else return res = 0;
}

int doit2(int l, int r) {
  if (r < l) return 0;
  short & res = dp2[l][r];
  if (res >= 0) return res;
  res = 0;
  res += isPalindromo(l,r);
  res += doit2(l+1, r);
  return res;
}


int doit(int l, int r) {
  if (r < l) return 0;
  int & res = dp[l][r];
  if (res >= 0) return res;
  // opcion uno mantengo el lado derecho...
  res = doit2(l,r);
  // opcion dos lo muevo...
  res += doit(l,r-1);
  return res;
}


int main() {
  int i, j, k;
  memset(dp2, -1, sizeof(dp2));
  memset(dp, -1, sizeof(dp));
  memset(isPal, -1, sizeof(isPal));
  scanf("%s", s);
  len = strlen(s);
  int q; scanf("%d", &q);
  for (int h = 0 ; h < q ; ++h) {
    int l, r; scanf("%d %d", &l, &r);
    l--, r--;
    printf("%d\n", doit(l,r));
  }
  return 0;
}
